// 写打开 任意网页 的代码。

// 头文件引用
// 官方库
#include <windows.h>
#include <shellapi.h>
#include <string>
#include <map> // 用于错误代码映射
#include <basetsd.h> // 添加此行以解决 VCIC001 错误

// 项目专用函数库
#include "CodeSharingLibrary.h"



// 打开下载链接
bool Download_SW(const std::string url) {

    // 错误代码映射
    std::map<INT_PTR, std::string> errorCodes = {
        {0,"内存不足"},
        {2,"找不到文件"},
        {3,"找不到路径"},
        {5,"访问被拒绝"},
        {31,"未找到关联程序"}
    };

    // 使用 ShellExecute 打开链接
    HINSTANCE result = ShellExecuteA(
        NULL,
        "open",
        url.c_str(),
        NULL,
        NULL,
        SW_SHOWNORMAL
    );

    bool OpenFlag;

    // 检查是否成功
    INT_PTR errorCode = reinterpret_cast<INT_PTR>(result);
    if (errorCode <= 32) {
        auto error = errorCodes.find(errorCode);
        if (error != errorCodes.end()) {
            // 无法打开链接
            OpenFlag = false;
        }
        else {
            // 无法打开链接，未知错误代码：
            OpenFlag = false;
        }
    }
    else {
        // 下载链接打开成功！
        OpenFlag = true;
    }
    return OpenFlag;
}